<?php
/**
 * 定义 View_Interface 接口
 * 
 * @copyright Copyright (c) 2008 Classic Reappear Technology LLC
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 * @version $Id: interface.php 2009-2-27 下午03:01:56 蓝色身份 $
 */

/**
 * 视图接口
 *
 * @author 蓝色身份 <lance.w@live.cn>
 * @copyright Copyright (c) 2008 Classic Reappear Technology LLC
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 * @package View
 */
interface View_Interface
{
    /**
     * 返回视图实例
     *
     * @return mixed
     */
    public function getEngine();

    /**
     * 设置视图文件存放路径
     *
     * @return void
     */
    public function setScriptPath($path);

    /**
     * 获取所有视图文件存放路径
     *
     * @return array
     */
    public function getScriptPaths();

    /**
     * 魔术方法指派变量
     *
     * @param string $key 变量名
     * @param mixed $val 变量值
     * @return void
     */
    public function __set($key, $val);

    /**
     * 魔术方法判断变量是否已指派
     *
     * @param string $key 变量名
     * @return boolean
     */
    public function __isset($key);

    /**
     * 魔术方法删除一个已指派的变量
     *
     * @param string $key 变量名
     * @return void
     */
    public function __unset($key);

    /**
     * 指派视图变量
     *
     * @see __set()
     * @param string|array $spec 变量名
     * @param mixed $value 变量名
     * @return void
     */
    public function assign($spec, $value = null);

    /**
     * 清除所有已赋值的变量
     *
     * @return void
     */
    public function clearVars();

    /**
     * 渲染视图以便输出到屏幕
     *
     * @param string $name 视图文件
     * @return string
     */
    public function render($name);
}